Return to SAL added for VTi by adding a new SAL (OEM defined) function.
Using this patch I was able to hot-add/hot-remove under linux (in fact
virtualized hot).
Signed-off-by: Tristan Gingold <tgingold@free.fr>
if (targ == NULL)
panic_domain(NULL, "Unknown IPI cpu\n");
- if (!test_bit(_VCPUF_initialised, &targ->vcpu_flags)) {
+ if (!test_bit(_VCPUF_initialised, &targ->vcpu_flags) ||
+ test_bit(_VCPUF_down, &targ->vcpu_flags)) {
+
struct pt_regs *targ_regs = vcpu_regs(targ);
struct vcpu_guest_context c;
case SAL_UPDATE_PAL:
printk("*** CALLED SAL_UPDATE_PAL. IGNORED...\n");
break;
+ case SAL_XEN_SAL_RETURN:
+ if (!test_and_set_bit(_VCPUF_down, ¤t->vcpu_flags))
+ vcpu_sleep_nosync(current);
+ break;
default:
printk("*** CALLED SAL_ WITH UNKNOWN INDEX. IGNORED...\n");
status = -1;
#define EFI_MEMDESC_VERSION 1
+/* Additionnal OEM SAL. */
+#define SAL_XEN_SAL_RETURN 0x02000000
+
extern struct ia64_pal_retval xen_pal_emulator(u64, u64, u64, u64);
extern struct sal_ret_values sal_emulator (long index, unsigned long in1, unsigned long in2, unsigned long in3, unsigned long in4, unsigned long in5, unsigned long in6, unsigned long in7);
extern struct ia64_pal_retval pal_emulator_static (unsigned long);